package com.umpay.feign.hystrix;

import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import com.umpay.dto.UMFResponse.Message;
import com.umpay.dto.memberMgr.req.BindBankAccountReq;
import com.umpay.dto.memberMgr.req.MemberPayAgreementsReq;
import com.umpay.dto.memberMgr.req.MemberQualExamReq;
import com.umpay.dto.memberMgr.req.MemberQueryReq;
import com.umpay.dto.memberMgr.req.MemberRegisterReq;
import com.umpay.dto.memberMgr.req.MemberSuppAccountReq;
import com.umpay.dto.memberMgr.req.MerConvertReq;
import com.umpay.dto.memberMgr.req.SaveBankCardInfReq;
import com.umpay.dto.memberMgr.reqdep.DepCorpRegisterAndBindAccountReq;
import com.umpay.dto.memberMgr.res.BindBankAccountRes;
import com.umpay.dto.memberMgr.res.CardBinSearchRes;
import com.umpay.dto.memberMgr.res.MemberPayAgreementsRes;
import com.umpay.dto.memberMgr.res.MemberQueryRes;
import com.umpay.dto.memberMgr.res.MemberRegisterRes;
import com.umpay.dto.memberMgr.res.MerBusiAgreementQueryRes;
import com.umpay.dto.memberMgr.res.MerCertRes;
import com.umpay.dto.memberMgr.res.MerConvertRes;
import com.umpay.dto.memberMgr.res.QryMerPayServiceRes;
import com.umpay.dto.memberMgr.res.QryMerPproductRelRes;
import com.umpay.dto.memberMgr.res.QryMerPproductSupportBankListRes;
import com.umpay.dto.memberMgr.res.SaveBankCardInfRes;
import com.umpay.dto.memberMgr.resdep.DepCorpRegisterAndBindAccountRes;
import com.umpay.feign.client.MemberDomainServerFeignClient;
import com.umpay.feign.factory.MemberDomainFeignClientWithFactory;

import feign.hystrix.FallbackFactory;

@Component
public class MemberDomainServerFeignClientHystrix implements FallbackFactory<MemberDomainServerFeignClient> {

    private static final Logger LOGGER = LoggerFactory.getLogger(MemberDomainServerFeignClientHystrix.class);

    @Override
    public MemberDomainServerFeignClient create(Throwable cause) {
        MemberDomainServerFeignClientHystrix.LOGGER.info("fallback; reason was: {}", cause.getMessage());
        return new MemberDomainFeignClientWithFactory() {

			@Override
			public Message<MerBusiAgreementQueryRes> qryMerBproductInf(String merId, String bProductId, String rpid) {
				// TODO Auto-generated method stub
				return null;
			}

			@Override
			public Message<QryMerPproductRelRes> qryMerPproductIdRel(String merId, String pProductId, String rpid) {
				// TODO Auto-generated method stub
				return null;
			}

//			@Override
//			public Message<MerInfRes> getMerInfo(String merId, String rpid) {
//				// TODO Auto-generated method stub
//				return null;
//			}

			@Override
			public Message<MemberRegisterRes> memberRegister(MemberRegisterReq member) {
				// TODO Auto-generated method stub
				return null;
			}

			@Override
			public Message<MemberQueryRes> getMemberInfo(MemberQueryReq memberQueryReq) {
				// TODO Auto-generated method stub
				return null;
			}

			@Override
			public Message<MemberPayAgreementsRes> getMemberPayAgreemeetsInf(
					MemberPayAgreementsReq memberPayAgreementsReq) {
				// TODO Auto-generated method stub
				return null;
			}

			@Override
			public Message<QryMerPproductSupportBankListRes> qryPproductSupportBankList(String merId, String pProductId,
					String rpid) {
				// TODO Auto-generated method stub
				return null;
			}


			@Override
			public Message<BindBankAccountRes> bindBankAccount(BindBankAccountReq bindBankAccountReq) {
				// TODO Auto-generated method stub
				return null;
			}

			@Override
			public Message<CardBinSearchRes> getCardBinInfo(Map<String, String> reqMap) {
				// TODO Auto-generated method stub
				return null;
			}

			@Override
			public Message<MemberQualExamReq> updateMemberQuelState(MemberQualExamReq memberQualExamReq) {
				// TODO Auto-generated method stub
				return null;
			}

			@Override
			public Message<MemberSuppAccountReq> memberSuppAcc(MemberSuppAccountReq member) {
				// TODO Auto-generated method stub
				return null;
			}

			@Override
			public Message<DepCorpRegisterAndBindAccountRes> merMemberReg(
					DepCorpRegisterAndBindAccountReq depCorpRegisterAndBindAccountReq) {
				// TODO Auto-generated method stub
				return null;
			}

			@Override
			public Message<SaveBankCardInfRes> recordCard(
					SaveBankCardInfReq saveBankCardInfReq) {
				/**   
				* @Description: TODO(用一句话描述该文件做什么) 
				* @author zhanglz   
				* @date 2018年10月12日 上午10:31:54 
				*/
				return null;
			}
			
			@Override
			public Message<MerCertRes> getMerCert(String merId, String serviceId, String rpid) {
				
				return null;
			}

			@Override
			public Message<MerConvertRes> qryMerConvert(MerConvertReq merConvertReq) {
				
				return null;
			}
			
			@Override
			public Message<QryMerPayServiceRes> qryMerPayService(String merId, String pProductId,String rpid) {
				
				return null;
			}

        };
    }
}
